asp.net MVC

c# serialize object-A circular reference was detected while serializing an object of type System.Data.Entity.DynamicProxies

c# serialize object-A circular reference was detected while serializing an object of type System.Data.Entity.DynamicProxies, someone asked me to explain?

I am using asp.net entity framework, when I tried to convert entity object list to json and return jsonresult in mvc. I used json serialize, while running the application I got this following error,

A circular reference was detected while serializing an object of type System.Data.Entity.DynamicProxies

Problem with this following code:

  [HttpPost]
        public ActionResult CreateJson()
        {
            try
            {
                using (models context = new models())
                {
                    var CustomerList = context.Customers.ToList();
                    var jsondata = new JavaScriptSerializer().Serialize(CustomerList);
                    string path =Server.MapPath("~/Json/");
                    System.IO.File.WriteAllText(path + "customer.json",jsondata);
                    return Json(CustomerList, JsonRequestBehavior.AllowGet);
                }
            }
            catch (Exception ez)
            {
                return null;
            }
        }   

Solution:

The database circular reference was solved by setting ProxyCreationEnabled to false. So those not to load to child objects of customer object. I have included the following line “context.Configuration.ProxyCreationEnabled = false; in the json method.

using (models context = new models())
                {
                    context.Configuration.ProxyCreationEnabled= false; // included the following code
                    var CustomerList =context.Customers.ToList();
                    var jsondata = new JavaScriptSerializer().Serialize(CustomerList);
                    string path =Server.MapPath("~/Json/");
                    System.IO.File.WriteAllText(path + "customer.json",jsondata);
                    return Json(CustomerList, JsonRequestBehavior.AllowGet);
                }  

Post your comments / questions